﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;

namespace Baustein
{
    class cGezeichneterBaustein
    {
        int iHöhe = 200,
            iBreite = 100,
            //iAnzahlEin,
            ix0,
            iy0;
        public cGezeichneterBaustein(Graphics grafik, CBaustein baustein, int ix0, int iy0, int ihöhe, int iBreite)
        {
            this.baustein = baustein;
            this.grafik = grafik;
            this.ix0 = ix0;
            this.iy0 = iy0;
        }

        public int IBreite
        {
            get { return iBreite; }
            set { iBreite = value; }
        }

        public int IHöhe
        {
            get { return iHöhe; }
            set { iHöhe = value; }
        }
        public int Ix0
        {
            get { return ix0; }
            set { ix0 = value; }
        }

        public int Iy0
        {
            get { return iy0; }
            set { iy0 = value; }
        }

        Graphics grafik;

        public Graphics Grafik
        {
            get { return grafik; }
            set { grafik = value; }
        }
        public void Zeichnen()
        {

            //
            Rectangle rechteck = new Rectangle(
               ix0/*x-Koordinaten(nach rechts)*/,
               iy0/*y-Koordinaten(nach unten)*/,
               iBreite/*Breite*/,
               iHöhe/*Länge*/);
            //Fläche für Zeichnung
            grafik.DrawRectangle(Pens.Black, rechteck);
            Point pA = new Point();
            Point pB = new Point();
            Pen Pensile = new Pen(Color.Black);
            Brush Brusch =new SolidBrush (Color.Black);
            for (int i = 1; i <= baustein.IAnzEin; i++)
            {
                
                pA.X = ix0 - 50;
                pA.Y = i * iHöhe / (baustein.IAnzEin + 1) + iy0;
                pB.X = ix0;
                pB.Y = pA.Y;
                if (baustein.BEingaenge[i - 1] == true)
                {
                    Pensile.Color = Color.Green;
                     Brusch.SolidBrusch = Color.Green;
 
                    
                }
                else
                {
                    Pensile.Color = Color.Red;   
                }
                grafik.DrawLine(Pensile, pA, pB);
            if (baustein.BInvert[i]== true)
            {
                grafik.DrawEllipse(Pensile, pB.X - 10, pB.Y - 10, 10, 10);
                
            }
            else
            {
                grafik.FillEllipse(Pensile, pB.X - 10, pB.Y - 10, 10, 10);
            }
            }
            Font drawFont = new Font("Arial", 20);
            SolidBrush drawBrush = new SolidBrush(Color.Black);
             
            if (baustein.BAusgang == true)
            {
                 Pensile.Color=Color.Green;              
            }
            else
            {
                Pensile.Color=Color.Red;                 
            }
            grafik.DrawLine(Pensile, ix0 + iBreite, iHöhe / 2 + iy0, ix0 + iBreite + 50, iHöhe / 2 + iy0);
            grafik.DrawString(baustein.StrName, drawFont, drawBrush, rechteck);
            
        }
        public CBaustein baustein { get; set; }        
    }
}
